/*
  ES6模块化语法：
    引入 import
      import xxx from 'xxx'
        引入暴露default属性上的内容
      import { xxx } from 'xxx'
        引入暴露的xxx内容
      import * as xxx from 'xxx'
        引入暴露的所有内容

    暴露 export
      1. 默认暴露：
        暴露default属性，属性的值就是真正暴露的内容
      2. 分别暴露
        直接在对象暴露内容
      3. 统一暴露
        直接在对象暴露内容

    结论：
      1. 如果模块采用默认暴露：import xxx from 'xxx'
      2. 如果模块采用分别/统一暴露：
        如果需要引入模块部分内容：import { xxx } from 'xxx'
        如果需要引入模块全部内容：import * as xxx from 'xxx'
*/

// 引入默认暴露的内容
// import m1 from "./m1"; // ok
// console.log(m1);

// import { a } from "./m1"; // 不ok
// console.log(a); // undefined

// 引入分别暴露的内容
// import { c, d } from "./m2"; // ok
// console.log(c, d);

// import m2 from "./m2"; // 不ok
// console.log(m2); // undefined

// 引入统一暴露的内容
// import { e, f } from "./m3"; // ok
// console.log(e, f);

// import m3 from "./m3"; // 不ok
// console.log(m3); // undefined

// 分别/统一暴露的其他引入方式

// * 所有  as 重命名
// 引入m3模块暴露的所有内容，重命名为m3
// import * as m3 from "./m3";
// console.log(m3);

// import * as m1 from "./m1";
// console.log(m1);

import m1, { c, d } from "./m1";
console.log(m1, c, d);
